builder: Allow values of type GType
authorBenjamin Otte <otte@redhat.com>
Tue, 4 Jun 2019 04:09:31 +0000 (06:09 +0200)
committerBenjamin Otte <otte@redhat.com>
Tue, 4 Jun 2019 04:11:44 +0000 (06:11 +0200)
In particular this allows setting the item-type property of GListStore.

gtk/gtkbuilder.c

index 63cb6a6a2e8aee3be99a251e8fea741f238cf836..47dface108f560a888bd9725da46c3f5b9349c3e 100644 (file)
@@ -2215,6 +2215,27 @@ gtk_builder_value_from_string_type (GtkBuilder   *builder,
       else
         ret = FALSE;
       break;
+    case G_TYPE_POINTER:
+      if (G_VALUE_HOLDS (value, G_TYPE_GTYPE))
+        {
+          GType resolved_type;
+
+          resolved_type = gtk_builder_get_type_from_name (builder, string);
+          if (resolved_type == G_TYPE_INVALID)
+            {
+              g_set_error (error,
+                           GTK_BUILDER_ERROR,
+                           GTK_BUILDER_ERROR_INVALID_VALUE,
+                           "Unsupported GType '%s' for value of type 'GType'", string);
+              return FALSE;
+            }
+          g_value_set_gtype (value, resolved_type);
+
+          ret = TRUE;
+        }
+      else
+        ret = FALSE;
+      break;
     default:
       ret = FALSE;
       break;